package cn.itcast.scala.course05

/**
  * 数组操作  可变数组与不可变数组
  * create by zhangtian on 2019/1/3
  */
object ArrayApp extends App {

  println("*************** 不可变数组 **************")
  val a = new Array[Int](5)
  a.length
  a(1) = 12
  a(1)

  val b = Array("spark", "hadoop", "storm")
  b(1) = "flink"

  val c = Array(2, 3, 4, 5, 6, 7, 8, 9)
  c.sum
  c.max
  c.min

  c.mkString // 数组转string
  c.mkString(",") // 数组转string 并用，分割
  c.mkString("<", ",",">") //  <2, 3, 4, 5, 6, 7, 8, 9>

  println("*************** 可变数组 **************")
  val d = scala.collection.mutable.ArrayBuffer[Int]()

  d += 1
  d += 2
  d += (3, 4, 5)
  d ++= Array(6, 7, 8)

  d.insert(0, 0)// 第0个位置插入0，原始数据后移
  d.remove(1) // 移除下标1的元素
  d.remove(0, 3) // 从下标0开始  移除3个元素
  d.trimEnd(2) // 移除最后的两个元素

  println(d)
  println(d.toArray.mkString) // 可变数组转换为不可变数组  并转换为string

  // 遍历数组中元素
  for(i <- 0 until d.length) {
    println(d(i))
  }

  for (ele <- d) {
    println(ele)
  }

  // 逆序遍历数组中元素
  for(i <- (0 until d.length).reverse) {
    println(d(i))
  }
}
